/* test_caesar.c
**
** Copyright (c) 2007, Meadhbh S. Hamrick
** All rights reserved.
** 
** Redistribution  and  use  in  source  and  binary  forms,  with  or  without
** modification, are permitted provided that the following conditions are met:
** 
**  * Redistributions of  source code must  retain the above  copyright notice,
**    this list of conditions and the following disclaimer.
** 
**  * Redistributions in binary form must reproduce the above copyright notice,
**    this list of conditions and the following disclaimer in the documentation
**    and/or other materials provided with the distribution.
** 
**  * Neither the  name of  Project Meadhbh  nor the names of  its contributors
**    may be used  to endorse  or promote  products derived from this  software
**    without specific prior written permission.
** 
** THIS SOFTWARE IS PROVIDED BY  THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
** AND ANY  EXPRESS OR IMPLIED WARRANTIES,  INCLUDING, BUT NOT  LIMITED TO, THE
** IMPLIED WARRANTIES  OF MERCHANTABILITY AND FITNESS FOR  A PARTICULAR PURPOSE
** ARE DISCLAIMED.  IN NO  EVENT SHALL THE  COPYRIGHT OWNER OR  CONTRIBUTORS BE
** LIABLE  FOR  ANY  DIRECT,   INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR
** CONSEQUENTIAL  DAMAGES  (INCLUDING,  BUT  NOT  LIMITED  TO,  PROCUREMENT  OF
** SUBSTITUTE GOODS  OR SERVICES;  LOSS OF USE,  DATA, OR PROFITS;  OR BUSINESS
** INTERRUPTION)  HOWEVER CAUSED  AND ON  ANY THEORY  OF LIABILITY,  WHETHER IN
** CONTRACT,  STRICT LIABILITY,  OR  TORT (INCLUDING  NEGLIGENCE OR  OTHERWISE)
** ARISING IN ANY WAY  OUT OF THE USE OF THIS SOFTWARE,  EVEN IF ADVISED OF THE
** POSSIBILITY OF SUCH DAMAGE.
** 
** $Id: test_caesar.c 66 2007-11-08 07:18:51Z msh.mobile $
*/

/** \file test_caesar.c
**  \brief Test CAESAR Stream Cipher
**
*/

/* Macro Definitions */
#define MC_SSC_CAESAR_TEST_MAX_CONTEXTS 6
#define MC_SSC_CAESAR_TEST_MAX_VECTORS 1

/* File Includes */
#include <string.h>
#include "mutil.h"
#include "mcrypto/caesar.h"
#include "test_caesar.h"
#include <CUnit/CUnit.h>
#include <stdlib.h>
#include <stdio.h>

/* Typedefs, Structs, Unions, Enums, etc. */

/* Static Function Prototypes */

/* Variable Declarations */
tMCCaesar caesar_actual_contexts [ MC_SSC_CAESAR_TEST_MAX_CONTEXTS ];
tMCCaesar caesar_expected_contexts [ MC_SSC_CAESAR_TEST_MAX_CONTEXTS ];
uint32_t caesar_bytes_encrypted[ MC_SSC_CAESAR_TEST_MAX_VECTORS ];
uint32_t caesar_bytes_decrypted[ MC_SSC_CAESAR_TEST_MAX_VECTORS ];

/* Function Definitions */

/** \fn int suite_caesar_init( void )
**  \brief Calls various caesar functions in preparation for value checking.
**  \returns 0 (success)
** 
** This is  the function where "rubber  meets the road." We  call all the
** functions  under test  in this  initialization function  and  in later
** tests simply compare the values we get with known good values.
** 
** The algorithm-specific  functions don't  return error codes  and don't
** check parameters. Ergo, we won't  know if there's a failure during the
** init routine's run. We get that info later in the test_*()
** functions.
*/

int suite_caesar_init() {
  return( 0 );
}

/** \fn void test_caesar_vectors( void )
**  \brief Tests that we produced the right output
** 
*/

void test_caesar_vectors( ) {
}

/** \fn void test_mc_ssc_caesar_clone( void )
**  \brief Tests our ability to clone hash contexts
** 
** In this  test, we  look to  see if our  ability to  copy a  context is
** dependent on  the state of the  context. I would be  very surprised if
** this fails.
*/

void test_mc_ssc_caesar_clone( ) {
}

/** \fn void test_mc_ssc_caesar_clear( void )
**  \brief Tests to ensure that sensitive data is cleared
** 
*/

void test_mc_ssc_caesar_clear( ) {
}

/** \fn void test_mc_ssc_caesar_initialize( void )
**  \brief Tests the ability to initiailze a newly allocated hashing context. 
** 
*/

void test_mc_ssc_caesar_initialize( ) {
  /* Actually we test this already in the clone tests */
}

void test_mc_ssc_caesar_encrypt( ) {
  /* ditto */
}

void test_mc_ssc_caesar_decrypt( ) {
  /* todo: derive a test of the keystream */
}

